/**
 * window.localStorage 浏览器永久缓存
 * @method set 设置永久缓存
 * @method get 获取永久缓存
 * @method remove 移除永久缓存
 * @method clear 移除全部永久缓存
 */
var Local = {
    // 设置永久缓存
    set(key, val) {
        window.localStorage.setItem(key, JSON.stringify(val))
    },
    // 获取永久缓存
    get(key) {
        const value = window.localStorage.getItem(key) || null
        if (!value) return null
        return JSON.parse(value)
    },
    // 移除永久缓存
    remove(key) {
        window.localStorage.removeItem(key)
    },
    // 移除全部永久缓存
    clear() {
        window.localStorage.clear()
    },
}

// 随机ID
function createRandomId() {
    return (Math.random() * 10000000).toString(16).substr(0, 4) + (new Date()).getTime() + Math.random().toString().substr(2, 5);
}

/**
 * @describe base64传数据给服务器中文不支持解决办法：
 * @param {String} model // 模式: 'encode'转码base64 'decode'解码base64
 * @param {String} data // 准备转换的数据，必须是字符串
 * @调用例子:
    var data = {
      'name': 'tom',
      'zhName': '汤姆',
      'age': 18,
      'sex': true,
      'qqq': 'undefined',
      'www': null,
    }
    var a = jsonToBase64('encode', JSON.stringify(data, undefined, 2)) // 编码
    console.log('JSON ==> base64:', a);
    var b = jsonToBase64('decode', a) // 解码
    console.log("base64 ==> JSON:", b);
 */
function jsonToBase64(model, data) {
    if (!model || !data || Object.prototype.toString.call(data) !== '[object String]') {
        console.log('参数错误');
        return
    }

    const fun = {
        // JSON ==> base64
        encode: () => {
            return window.btoa(encodeURIComponent(data).replace(/%([0-9A-F]{2})/g,
                function toSolidBytes(match, index) {
                    return String.fromCharCode(Number('0x' + index));
                }));
        },
        // base64 ==> JSON
        decode: () => {
            return decodeURIComponent(window.atob(data).split('').map(function (index) {
                return '%' + ('00' + index.charCodeAt(0).toString(16)).slice(-2);
            }).join(''));
        },
    }

    return fun[model]()
}

// 提交数据
function submitData(content, sha, callback) {
    var params = {
        access_token: Local.get('token'),
        owner: 'konghaowei',
        repo: 'gitee-database',
        path: 'database/leave-message.json',
        ref: 'other',
    }
    var url = `https://gitee.com/api/v5/repos/${params.owner}/${params.repo}/contents/${params.path}?access_token=${params.access_token}`
    var data = {
        'access_token': params.token,
        'content': content,
        'sha': sha,
        'message': '数据更新',
        'branch': params.ref
    };
    var json = JSON.stringify(data);

    var xhr = new XMLHttpRequest();
    xhr.open("PUT", url, true);
    xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    xhr.onload = function () {
        var res = JSON.parse(xhr.responseText);
        if (xhr.readyState == 4 && xhr.status == "200") {
            // console.log(res);
            callback(res)
        } else {
            console.error(users);
        }
    }
    xhr.send(json);
}

// 获取URL参数
function getUrlVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) { return pair[1]; }
    }
    return (false);
}